﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using QLPhanQuyen.GUI;
using QLPhanQuyen.BO;
using QLDVu.GUI;

namespace PMQLDoanhNghiep
{
    public partial class MainForm : Office2007Form
    {
        NguoiDungBO NDBO = new NguoiDungBO();

        public MainForm()
        {
            InitializeComponent();
        }

        private void MainForm_Load(object sender, EventArgs e)
        {
            AttachKeyDownToControls(this);
            TrangThaiButtonTheoDangNhap(TrangThaiDangNhap.TrangThai);       
        }
        /// <summary>
        /// Kiểm tra tabcontrol có tồn tại chưa. Nếu đã tồn tại thì không cho khởi tạo nữa
        /// </summary>
        /// <param name="name">name tên control</param>
        /// <returns> bool </returns>
        public bool KiemTraTonTai(string name)
        {
            for (int i = 0; i < tabMain.Tabs.Count; i++)
            {
                if (tabMain.Tabs[i].Text == name)
                {
                    tabMain.SelectedTabIndex = i;  // Tab focus.
                    return true;
                }
            }
            return false;
        }
        /// <summary>
        /// sự kiện click vào close button trên tabcontrol
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tabMain_TabRemoved(object sender, EventArgs e)
        {
            if (tabMain.Tabs.Count == 0)
            {
                this.tabMain.Hide();
                pnlMain.Show();
            }
        }
        /// <summary>
        /// sự kiện click button Phân Quyền
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPhanQuyen_Click(object sender, EventArgs e)
        {
            if (KiemTraTonTai(" Phân Quyền ") == false)
            {
                pnlMain.Hide();
                tabMain.Dock = DockStyle.Fill;
                tabMain.Show();
                TabItem tab = tabMain.CreateTab(" Phân Quyền ");
                PhanQuyenForm frm = new PhanQuyenForm();
                frm.Dock = DockStyle.Fill;
                frm.FormBorderStyle = FormBorderStyle.None;  // Khong thể dy chuyển Form.
                frm.TopLevel = false;//Gán thuộc tính =false cho phép add form vào 1 control khác.
                tab.AttachedControl.Controls.Add(frm);
                frm.Show();
                tabMain.SelectedTabIndex = tabMain.Tabs.Count - 1;
            }
        }

        private void btnKetThuc_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void btnDoiMatKhau_Click(object sender, EventArgs e)
        {
            if (KiemTraTonTai(" DoiMatKhau ") == false)
            {
                pnlMain.Hide();
                tabMain.Dock = DockStyle.Fill;
                tabMain.Show();
                TabItem tab = tabMain.CreateTab(" DoiMatKhau ");
                ThayDoiMatKhauForm frm = new ThayDoiMatKhauForm();
                frm.FormBorderStyle = FormBorderStyle.None;  // Khong thể dy chuyển Form.
                frm.TopLevel = false;//Gán thuộc tính =false cho phép add form vào 1 control khác.
                tab.AttachedControl.Controls.Add(frm);
                frm.Show();
                tabMain.SelectedTabIndex = tabMain.Tabs.Count - 1;
            }
        }

        private void btnFile_DangNhap_Click(object sender, EventArgs e)
        {
            pnlDangNhapForm.Visible = true;
        }

        public void TrangThaiButtonTheoDangNhap(bool dangNhap)
        {
            if(dangNhap==false)
            {
                btnDangXuat.Enabled = false;
                btnPhanQuyen.Enabled = false;
                btnDoiMatKhau.Enabled = false;
                btnNhatKyHeThong.Enabled = false;
                btnSaoLuu.Enabled = false;
                btnPhucHoi.Enabled = false;
                btnSuaChua.Enabled = false;
                btnKetChuyen.Enabled = false;
                btnNhapDanhMucTuExcel.Enabled = false;
                btnKhuVuc.Enabled = false;
                btnKhachHang.Enabled = false;
                btnNhaCungCap.Enabled = false;
                btnKhoHang.Enabled = false;
                btnDonViTinh.Enabled = false;
                btnNhomHang.Enabled = false;
                btnHangHoa.Enabled = false;
                btnInMaVach.Enabled = false;
                btnTyGia.Enabled = false;
                btnBoPhan.Enabled = false;
                btnNhanVien.Enabled = false;
               
                btnQuanLyPhieuBaoGia.Enabled = false;
                btnQuanLyPhieuThuTien.Enabled = false;
               
                btnQuanLyPhieuSua.Enabled = false;
                btnQuanLyKhachHang.Enabled = false;
                btnBaoCaoCongNo.Enabled = false;
               
            }
            else
            {
                
                btnDangXuat.Enabled = true;
                btnDoiMatKhau.Enabled = false;
                btnPhanQuyen.Enabled = false;
                btnNhatKyHeThong.Enabled = false;
                btnSaoLuu.Enabled = false;
                btnPhucHoi.Enabled = false;
                btnSuaChua.Enabled = false;
                btnKetChuyen.Enabled = false;
                btnNhapDanhMucTuExcel.Enabled = false;
                btnKhuVuc.Enabled = false;
                btnKhachHang.Enabled = false;
                btnNhaCungCap.Enabled = false;
                btnKhoHang.Enabled = false;
                btnDonViTinh.Enabled = false;
                btnNhomHang.Enabled = false;
                btnHangHoa.Enabled = false;
                btnInMaVach.Enabled = false;
                btnTyGia.Enabled = false;
                btnBoPhan.Enabled = false;
                btnNhanVien.Enabled = false;
               
                btnQuanLyPhieuBaoGia.Enabled = true;
                btnQuanLyPhieuThuTien.Enabled = true;
                btnQuanLyKhachHang.Enabled = true;
                btnQuanLyPhieuSua.Enabled = true;
              
                btnBaoCaoCongNo.Enabled = true;
                
            }
        }

        private void TrangThaiButtonNhom(bool laAdmin)
        {
            if (laAdmin == true)
            {
                btnPhanQuyen.Enabled = true;
                btnDoiMatKhau.Enabled = true;
                btnPhanQuyen.Enabled = true;
                btnDoiMatKhau.Enabled = true;
                btnNhatKyHeThong.Enabled = true;
                btnSaoLuu.Enabled = true;
                btnPhucHoi.Enabled = true;
                btnSuaChua.Enabled = true;
                btnKetChuyen.Enabled = true;
            }
            else
            {
                btnPhanQuyen.Enabled = false;
                btnDoiMatKhau.Enabled = false;
                btnPhanQuyen.Enabled = false;
                btnDoiMatKhau.Enabled = false;
                btnNhatKyHeThong.Enabled = false;
                btnSaoLuu.Enabled = false;
                btnPhucHoi.Enabled = false;
                btnSuaChua.Enabled = false;
                btnKetChuyen.Enabled = false;
            }
        }

        
        private void btnDangNhap_Click(object sender, EventArgs e)
        {
            if (NDBO.KiemTraTonTai(txtTenDangNhap.Text) == false)
                MessageBox.Show("Bạn chưa đăng ký tà khoản");
            else
                if (NDBO.KiemTraDangNhap(txtTenDangNhap.Text, txtMatKhau.Text) == false)
                    MessageBox.Show("Mật khẩu không đúng");
                else
                {
                    TrangThaiDangNhap.TenDangNhap = txtTenDangNhap.Text;
                    TrangThaiDangNhap.TrangThai = true;
                    pnlDangNhapForm.Visible = false;
                    TrangThaiButtonTheoDangNhap(TrangThaiDangNhap.TrangThai);
                    TrangThaiButtonNhom(NDBO.KiemTraThuocNhomAdmin(txtTenDangNhap.Text));
                }
        }

        private void btnDong_Click(object sender, EventArgs e)
        {
            pnlDangNhapForm.Visible = false;
        }

        private void btnDangXuat_Click(object sender, EventArgs e)
        {
            TrangThaiDangNhap.TrangThai = false;
            TrangThaiButtonTheoDangNhap(TrangThaiDangNhap.TrangThai);
        }

        void AttachKeyDownToControls(Control ccoll)
        {
            foreach (Control c in ccoll.Controls)
            {
                if (0 < c.Controls.Count)
                {
                    AttachKeyDownToControls(c);
                }
                else
                {
                    c.KeyDown += c_KeyDown;
                }
            }
        }

        void c_KeyDown(object sender, KeyEventArgs e)
        {
            Control c = sender as Control;
            switch (e.KeyCode)
            {
                case Keys.Enter:
                    c.Parent.SelectNextControl(c, true, true, true, true);
                    e.Handled = true;
                    break;
            }
        }

        private void btnQuanLyPhieuBaoGia_Click(object sender, EventArgs e)
        {
            if (KiemTraTonTai(" Quản Lý Phiếu Báo Giá ") == false)
            {
                pnlMain.Hide();
                tabMain.Dock = DockStyle.Fill;
                tabMain.Show();
                TabItem tab = tabMain.CreateTab(" Quản Lý Phiếu Báo Giá ");
                QuanLyPhieuBaoGia frm = new QuanLyPhieuBaoGia();
                frm.Dock = DockStyle.Fill;
                frm.FormBorderStyle = FormBorderStyle.None;  // Khong thể dy chuyển Form.
                frm.TopLevel = false;//Gán thuộc tính =false cho phép add form vào 1 control khác.
                tab.AttachedControl.Controls.Add(frm);
                frm.Show();
                tabMain.SelectedTabIndex = tabMain.Tabs.Count - 1;
            }
        }

        private void btnQuanLyPhieuSua_Click(object sender, EventArgs e)
        {
            if (KiemTraTonTai(" Quản Lý Phiếu Sửa Chữa ") == false)
            {
                pnlMain.Hide();
                tabMain.Dock = DockStyle.Fill;
                tabMain.Show();
                TabItem tab = tabMain.CreateTab(" Quản Lý Phiếu Sửa Chữa ");
                QuanLyPhieuSuaForm frm = new QuanLyPhieuSuaForm();
                frm.Dock = DockStyle.Fill;
                frm.FormBorderStyle = FormBorderStyle.None;  // Khong thể dy chuyển Form.
                frm.TopLevel = false;//Gán thuộc tính =false cho phép add form vào 1 control khác.
                tab.AttachedControl.Controls.Add(frm);
                frm.Show();
                tabMain.SelectedTabIndex = tabMain.Tabs.Count - 1;
            }
        }

        private void btnQuanLyPhieuThuTien_Click(object sender, EventArgs e)
        {
            if (KiemTraTonTai(" Quản Lý Phiếu Thu Tiền ") == false)
            {
                pnlMain.Hide();
                tabMain.Dock = DockStyle.Fill;
                tabMain.Show();
                TabItem tab = tabMain.CreateTab(" Quản Lý Phiếu Thu Tiền ");
                QuanLyPhieuThuForm frm = new QuanLyPhieuThuForm();
                frm.Dock = DockStyle.Fill;
                frm.FormBorderStyle = FormBorderStyle.None;  // Khong thể dy chuyển Form.
                frm.TopLevel = false;//Gán thuộc tính =false cho phép add form vào 1 control khác.
                tab.AttachedControl.Controls.Add(frm);
                frm.Show();
                tabMain.SelectedTabIndex = tabMain.Tabs.Count - 1;
            }
        }

        private void btnBaoCaoCongNo_Click(object sender, EventArgs e)
        {
            if (KiemTraTonTai(" Báo Cáo Nợ Khách Hàng ") == false)
            {
                pnlMain.Hide();
                tabMain.Dock = DockStyle.Fill;
                tabMain.Show();
                TabItem tab = tabMain.CreateTab(" Báo Cáo Nợ Khách Hàng ");
                BaoCaoNo frm = new BaoCaoNo();
                frm.Dock = DockStyle.Fill;
                frm.FormBorderStyle = FormBorderStyle.None;  // Khong thể dy chuyển Form.
                frm.TopLevel = false;//Gán thuộc tính =false cho phép add form vào 1 control khác.
                tab.AttachedControl.Controls.Add(frm);

                frm.Show();
                tabMain.SelectedTabIndex = tabMain.Tabs.Count - 1;
            }
        }

        private void btnQuanLyKhachHang_Click(object sender, EventArgs e)
        {
            if (KiemTraTonTai(" Quản Lý Khách Hàng ") == false)
            {
                pnlMain.Hide();
                tabMain.Dock = DockStyle.Fill;
                tabMain.Show();
                TabItem tab = tabMain.CreateTab(" Quản Lý Khách Hàng ");
                QuanLyKhachHang frm = new QuanLyKhachHang();
                frm.Dock = DockStyle.Fill;
                frm.FormBorderStyle = FormBorderStyle.None;  // Khong thể dy chuyển Form.
                frm.TopLevel = false;//Gán thuộc tính =false cho phép add form vào 1 control khác.
                tab.AttachedControl.Controls.Add(frm);

                frm.Show();
                tabMain.SelectedTabIndex = tabMain.Tabs.Count - 1;
            }
        }

    }
}
